package com.xlzcx.xltz.service.b_tweet;

import com.xlzcx.xltz.dao.BTweetMapper;
import com.xlzcx.xltz.entity.BTweet;
import com.xlzcx.xltz.entity.vo.BTweetVo;
import com.xlzcx.xltz.utils.SnowFlakeUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 作者: 李咨辰
 * 文件名: BTweetServiceImpl.java
 * 路径: com.xlzcx.xltz.service.tweet
 * 时间: 2024-10-23 12:23
 * 版本: 1.0
 * 描述: TODO 文章/推文
 **/
@Service
public class BTweetServiceImpl implements BTweetService {
    /**
     * 调用dao层
     */
    @Resource
    private BTweetMapper bTweetMapper;

    /**
     * 根据当前登录用户和城市获取推文数量
     *
     * @param city 城市编号
     * @return 文章列表
     */
    @Override
    public Long getTweetTotalByCity(String city) {
        return bTweetMapper.getTweetTotalByCity(city);
    }

    /**
     * 根据当前登录用户和城市获取推文
     *
     * @param userId   用户编号
     * @param city     城市编号
     * @param current  当前页
     * @param pageSize 没有条数
     * @return 文章列表
     */
    @Override
    public List<BTweetVo> getTweetByCity(Long userId, String city, int current, int pageSize) {
        Long offset =  ((long)current * pageSize);
        return bTweetMapper.getTweetByCity(userId, city, offset, pageSize);
    }

    /**
     * 发布文章
     *
     * @param bTweet 文章对象
     * @return 成功大于1
     */
    @Override
    public boolean addTweet(BTweet bTweet) {
        bTweet.setId(SnowFlakeUtil.getFlowIdInstance().nextId());
        bTweet.setCreateTime(new Date());
        int i = bTweetMapper.addTweet(bTweet);
        return i > 0;
    }


    /**
     * 根据关注信息获取论坛调试
     * @param userId 当前登录用户id
     * @return 关注的论坛条数
     */
    @Override
    public Long getTweetTotalByFollow(Long userId) {
        return bTweetMapper.getTweetTotalByFollow(userId);
    }

    /**
     * 根据关注信息获取推文
     * @param userId 用户编号
     * @return 文章列表
     */
    @Override
    public List<BTweetVo> getTweetByFollow(Long userId, int current, int pageSize) {
        Long offset = ((long) current * pageSize);
        return bTweetMapper.getTweetByFollow(userId,offset,pageSize);
    }


    /**
     * 获取论坛总条数
     * @return 总条数
     */
    @Override
    public Long getTweetAllTotal() {
        return bTweetMapper.getTweetAllTotal();
    }


    /**
     * 获取论坛推荐数据
     * @param userId 当前登录用户编号
     * @param current 当前页
     * @param pageSize 每页条数
     * @return 论坛列表
     */
    @Override
    public List<BTweetVo> getTweetAllList(Long userId, int current, int pageSize) {
        return bTweetMapper.getTweetAllList(userId,(long)current*pageSize,pageSize);
    }

    @Override
    public Integer getTweetTotalByUserId(Long userId) {
        return bTweetMapper.getTweetTotalByUserId(userId);
    }

    @Override
    public List<BTweetVo> getTweetByUserId(Long userId, Integer current, Integer pageSize) {
        return bTweetMapper.getTweetByUserId(userId,current*pageSize,pageSize);
    }
}
